#include "Group.h"

class Idle: public State<Group>
{
private:
	Idle() {}
	Idle(const Idle&);
	Idle& operator=(const Idle&);

public:
	static Idle* Instance() {static Idle instance; return &instance;}

public:
	virtual void Enter(Group* Group);
	virtual void Execute(Group* Group);
	virtual void Exit(Group* Group);

	virtual bool OnMessage(Group*, const Message&) {return true;}
};

class Moving: public State<Group>
{
private:
	Moving() {}
	Moving(const Moving&);
	Moving& operator=(const Moving&);

public:
	static Moving* Instance() {static Moving instance; return &instance;}

public:
	virtual void Enter(Group* Group);
	virtual void Execute(Group* Group);
	virtual void Exit(Group* Group);

	virtual bool OnMessage(Group*, const Message&) {return true;}
};